this._appSys = Shell.AppSystem.get_default();
},
- getResultMeta: function(app) {
- return { 'id': app,
- 'name': app.get_name(),
- 'createIcon': function(size) {
- return app.create_icon_texture(size);
- }
- };
+ getResultMetas: function(apps) {
+ let metas = [];
+ for (let i = 0; i < apps.length; i++) {
+ let app = apps[i];
+ metas.push({ 'id': app,
+ 'name': app.get_name(),
+ 'createIcon': function(size) {
+ return app.create_icon_texture(size);
+ }
+ });
+ }
+ return metas;
},
getInitialResultSet: function(terms) {
this._gnomecc = this._appSys.lookup_app('gnome-control-center.desktop');
},
- getResultMeta: function(pref) {
- return { 'id': pref,
- 'name': pref.get_name(),
- 'createIcon': function(size) {
- return pref.create_icon_texture(size);
- }
- };
+ getResultMetas: function(prefs) {
+ let metas = [];
+ for (let i = 0; i < prefs.length; i++) {
+ let pref = prefs[i];
+ metas.push({ 'id': pref,
+ 'name': pref.get_name(),
+ 'createIcon': function(size) {
+ return pref.create_icon_texture(size);
+ }
+ });
+ }
+ return metas;
},
getInitialResultSet: function(terms) {
this._contactSys = Shell.ContactSystem.get_default();
},
- getResultMeta: function(id) {
- let contact = new Contact(id);
- return { 'id': id,
- 'name': contact.alias,
- 'createIcon': function(size) {
- return contact.createIcon(size);
- }
- };
+ getResultMetas: function(ids) {
+ let metas = [];
+ for (let i = 0; i < ids.length; i++) {
+ let contact = new Contact(ids[i]);
+ metas.push({ 'id': ids[i],
+ 'name': contact.alias,
+ 'createIcon': function(size) {
+ return contact.createIcon(size);
+ }
+ });
+ }
+ return metas;
},
getInitialResultSet: function(terms) {
this._docManager = DocInfo.getDocManager();
},
- getResultMeta: function(resultId) {
- let docInfo = this._docManager.lookupByUri(resultId);
- if (!docInfo)
- return null;
- return { 'id': resultId,
- 'name': docInfo.name,
- 'createIcon': function(size) {
- return docInfo.createIcon(size);
- }
- };
+ getResultMetas: function(resultIds) {
+ let metas = [];
+ for (let i = 0; i < resultIds.length; i++) {
+ let docInfo = this._docManager.lookupByUri(resultIds[i]);
+ if (!docInfo)
+ metas.push(null);
+ else
+ metas.push({ 'id': resultIds[i],
+ 'name': docInfo.name,
+ 'createIcon': function(size) {
+ return docInfo.createIcon(size);
+ }
+ });
+ }
+ return metas;
},
activateResult: function(id, params) {
this.parent(_("PLACES & DEVICES"));
},
- getResultMeta: function(resultId) {
- let placeInfo = Main.placesManager.lookupPlaceById(resultId);
- if (!placeInfo)
- return null;
- return { 'id': resultId,
- 'name': placeInfo.name,
- 'createIcon': function(size) {
- return placeInfo.iconFactory(size);
- }
- };
+ getResultMetas: function(resultIds) {
+ let metas = [];
+ for (let i = 0; i < resultIds.length; i++) {
+ let placeInfo = Main.placesManager.lookupPlaceById(resultIds[i]);
+ if (!placeInfo)
+ metas.push(null);
+ else
+ metas.push({ 'id': resultIds[i],
+ 'name': placeInfo.name,
+ 'createIcon': function(size) {
+ return placeInfo.iconFactory(size);
+ }
+ });
+ }
+ return metas;
},
activateResult: function(id, params) {
},
/**
- * getResultMeta:
- * @id: Result identifier string
+ * getResultMetas:
+ * @ids: Result identifier strings
*
- * Return an object with 'id', 'name', (both strings) and 'createIcon'
- * (function(size) returning a Clutter.Texture) properties which describe
- * the given search result.
+ * Return an array of objects with 'id', 'name', (both strings) and
+ * 'createIcon' (function(size) returning a Clutter.Texture) properties
+ * with the same number of members as @ids
*/
- getResultMeta: function(id) {
+ getResultMetas: function(ids) {
throw new Error('Not implemented');
},
let canDisplay = this._grid.childrenInRow(this._width) * MAX_SEARCH_RESULTS_ROWS
- this._grid.visibleItemsCount();
- for (let i = Math.min(this._notDisplayedResult.length, canDisplay); i > 0; i--) {
- let result = this._notDisplayedResult.shift();
- let meta = this.provider.getResultMeta(result);
- let display = new SearchResult(this.provider, meta, this._terms);
+ let numResults = Math.min(this._notDisplayedResult.length, canDisplay);
+ if (numResults == 0)
+ return;
+ let results = this._notDisplayedResult.splice(0, numResults);
+ let metas = this.provider.getResultMetas(results);
+ for (let i = 0; i < metas.length; i++) {
+ let display = new SearchResult(this.provider, metas[i], this._terms);
this._grid.addItem(display.actor);
}
},
this.parent(_("Your favorite Easter Egg"));
},
- getResultMeta: function(fish) {
- return { 'id': fish,
- 'name': capitalize(fish),
- 'createIcon': function(iconSize) {
- // for DND only (maybe could be improved)
- // DON'T use St.Icon here, it crashes the shell
- // (dnd.js code assumes it can query the actor size
- // without parenting it, while StWidget accesses
- // StThemeNode in get_preferred_width/height, which
- // triggers an assertion failure)
- return St.TextureCache.get_default().load_icon_name(null,
- 'face-smile',
- St.IconType.FULLCOLOR,
- iconSize);
- }
- };
+ getResultMetas: function(fish) {
+ return [{ 'id': fish[0], // there may be many fish in the sea, but
+ // only one which speaks the truth!
+ 'name': capitalize(fish[0]),
+ 'createIcon': function(iconSize) {
+ // for DND only (maybe could be improved)
+ // DON'T use St.Icon here, it crashes the shell
+ // (dnd.js code assumes it can query the actor size
+ // without parenting it, while StWidget accesses
+ // StThemeNode in get_preferred_width/height, which
+ // triggers an assertion failure)
+ return St.TextureCache.get_default().load_icon_name(null,
+ 'face-smile',
+ St.IconType.FULLCOLOR,
+ iconSize);
+ }
+ }];
},
getInitialResultSet: function(terms) {